package frsf.cidisi.exercise.laberinto.search.util;

import java.util.Arrays;

public class Celda {
	private int[] estado;
		
	private static int NORTE = 0;
	private static int ESTE = 1;
	private static int SUR = 2;
	private static int OESTE = 3;
	
	private static int LIBRE = 1;
			
	public Celda(int norte, int este, int sur, int oeste) {
		estado[NORTE] = norte;
		estado[ESTE] = este;
		estado[SUR] = sur;
		estado[OESTE] = oeste;
	}
	
	public Celda(int[] estado) {
		this.estado = estado;
	}
	
	public int getEstado(int dir) {
		return estado[dir];
	}
	
	static public int getNorte() {
		return NORTE;
	}
	
	static public int getEste() {
		return ESTE;
	}
	
	static public int getSur() {
		return SUR;
	}
	
	static public int getOeste() {
		return OESTE;
	}
	
	public boolean estaLibre(int direccion) {
		return estado[direccion] == LIBRE;
	}
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Celda other = (Celda) obj;
		if (!Arrays.equals(estado, other.estado))
			return false;
		return true;
	}
	
	@Override
	public Object clone() {
		return new Celda(estado);
	}

	@Override
	public String toString() {
		return "Celda [estado= " + Arrays.toString(estado) + "]";
	}
}
